﻿namespace Common
{
    public class WellKnownKeys
    {
        public class Session
        {
            /// <summary>
            /// Current SessionInfo object stored in ASP .NET Session
            /// </summary>
            public const string CURRENT_SESSION_INFO = "CURRENT_SESSION_INFO";

            /// <summary>
            /// Culture Info's Name
            /// </summary>
            public const string CULTURE_INFO = "CULTURE_INFO";

            /// <summary>
            /// Planilla de Pago html content
            /// </summary>
            public const string PLANILLA_DE_PAGO_ACTORES = "PLANILLA_DE_PAGO_ACTORES";

            /// <summary>
            /// Planilla de Pago html content
            /// </summary>
            public const string PLANILLA_DE_PAGO_STAFF = "PLANILLA_DE_PAGO_STAFF";

            /// <summary>
            /// Planilla de Proyecto html content
            /// </summary>
            public const string PLANILLA_DE_CREDITOS = "PLANILLA_DE_CREDITOS";

            /// <summary>
            /// All import project content
            /// </summary>
            public const string IMPORT_PROJECT_INFO = "IMPORT_PROJECT_INFO";
        }

        // TODO => Figure out a way to get rid of declaring this Class. Maybe using Reflection to get all Classes decorated with <CacheEntity> ?
        public class Cache
        {
            /// <summary>
            /// Lista de Estudios en Caché
            /// </summary>
            public const string ESTUDIOS = "ESTUDIOS";

            /// <summary>
            /// Lista de Tipos de Usuario en Caché
            /// </summary>
            public const string TIPOS_USUARIO = "TIPOS_USUARIO";

            /// <summary>
            /// Lista de Tipos de Canción en Caché
            /// </summary>
            public const string TIPOS_CANCION = "TIPOS_CANCION";

            /// <summary>
            /// Lista de Tipos de Documento en Caché
            /// </summary>
            public const string TIPOS_DOCUMENTO = "TIPOS_DOCUMENTO";

            /// <summary>
            /// Lista de Tipos de Proyecto en Caché
            /// </summary>
            public const string TIPOS_PROYECTO = "TIPOS_PROYECTO";

            /// <summary>
            /// Lista de Categorias de Usuario en Caché
            /// </summary>
            public const string CATEGORIAS_USUARIO = "CATEGORIAS_USUARIO";

            /// <summary>
            /// Lista de Medios de Pago en Caché
            /// </summary>
            public const string MEDIOS_PAGO = "MEDIOS_PAGO";

            /// <summary>
            /// Lista de Estados de Pago en Caché
            /// </summary>
            public const string ESTADOS_PAGO = "ESTADOS_PAGO";

            /// <summary>
            /// Lista de Estados de Guion en Caché
            /// </summary>
            public const string ESTADOS_GUION = "ESTADOS_GUION";

            /// <summary>
            /// Lista de Estados de Reclamo en Caché
            /// </summary>
            public const string ESTADOS_RECLAMO = "ESTADOS_RECLAMO";

            /// <summary>
            /// Lista de Autorizaciones de Guion en Caché
            /// </summary>
            public const string AUTORIZACIONES_GUION = "AUTORIZACIONES_GUION";

            /// <summary>
            /// Lista de Tipos de Notificación en Caché
            /// </summary>
            public const string TIPOS_NOTIFICACION = "TIPOS_NOTIFICACION";

            /// <summary>
            /// Lista de Tipos de Dirección en Caché
            /// </summary>
            public const string TIPOS_DIRECCION = "TIPOS_DIRECCION";

            /// <summary>
            /// Lista de Tipos de Teléfono en Caché
            /// </summary>
            public const string TIPOS_TELEFONO = "TIPOS_TELEFONO";
        }

        public class Grid
        {
            public class Settings
            {
                /// <summary>
                /// Default page size
                /// </summary>
                public const int DEFAULT_PAGE_SIZE = 100;

                /// <summary>
                /// Default width
                /// </summary>
                public const int DEFAULT_WIDTH = 1200;

                /// <summary>
                /// Default height
                /// </summary>
                public const int DEFAULT_HEIGHT = 420;
            }

            public class Actions
            {
                /// <summary>
                /// Ver
                /// </summary>
                public const string VER = "Ver";

                /// <summary>
                /// Editar
                /// </summary>
                public const string EDITAR = "Editar";

                /// <summary>
                /// Eliminar
                /// </summary>
                public const string ELIMINAR = "Eliminar";

                /// <summary>
                /// Activar
                /// </summary>
                public const string ACTIVAR = "Activar";
            }
        }

        public class Directories
        {
            public static class Files
            {
                public const string Root = "Files";

                public const string Planillas = Root +  "/Planillas/";
                public const string PlanillasPagos = Planillas +  "/Pagos/";
                public const string PlanillasPagosActores = PlanillasPagos +  "/Actores";
                public const string PlanillasPagosStaff = PlanillasPagos +  "/Staff";
                public const string PlanillasCreditos = Planillas +  "/Creditos/";
                
                public const string Scripts = Root +  "/Scripts/";
                public const string ScriptsUploaded = Scripts + "/Uploaded/";
            }

            public static class Images
            {
                public const string Root = "Images";

                public const string Iconos = Root + "/16x16/";
            }
        }

        public class Images
        {
            public class Icons
            {
                /// <summary>
                /// Ver
                /// </summary>
                public const string VER = Directories.Images.Iconos + "examinar.png";

                /// <summary>
                /// Editar
                /// </summary>
                public const string EDITAR = Directories.Images.Iconos + "editar.png";

                /// <summary>
                /// Eliminar
                /// </summary>
                public const string ELIMINAR = Directories.Images.Iconos + "eliminar.png";

                /// <summary>
                /// Habilitado
                /// </summary>
                public const string HABILITADO = Directories.Images.Iconos + "checked.png";

                /// <summary>
                /// Deshabilitado
                /// </summary>
                public const string DESHABILITADO = Directories.Images.Iconos + "unchecked.png";

                /// <summary>
                /// Reclamar
                /// </summary>
                public const string RECLAMAR = Directories.Images.Iconos + "exclamacion.png";

                /// <summary>
                /// Pago
                /// </summary>
                public const string PAGO = Directories.Images.Iconos + "pago.png";

                /// <summary>
                /// Liquidaciones
                /// </summary>
                public const string LIQUIDACIONES = Directories.Images.Iconos + "liquidaciones.png";

                /// <summary>
                /// Fecha
                /// </summary>
                public const string FECHA = Directories.Images.Iconos + "fecha.png";
            }
        }

        public class Page
        {
            public class Parameters
            {
                public const string ID_USUARIO      = "idUsuario"; 
                public const string ID_PROYECTO     = "idProyecto";
                public const string ID_GUION        = "idGuion";
                public const string ID_PROVEEDOR    = "idProveedor";
            }

            public class Names
            {
                /// <summary>
                /// Importación
                /// </summary>
                public const string IMPORTACION = "Importacion.aspx";

                /// <summary>
                /// Configuración
                /// </summary>
                public const string CONFIGURACION = "Configuracion.aspx";

                /// <summary>
                /// Default
                /// </summary>
                public const string DEFAULT = "Default.aspx";

                /// <summary>
                /// Facturación
                /// </summary>
                public const string FACTURACION = "Facturacion.aspx";

                /// <summary>
                /// Guion
                /// </summary>
                public const string GUION = "Guion.aspx";

                /// <summary>
                /// Liquidación
                /// </summary>
                public const string LIQUIDACION = "Liquidacion.aspx";

                /// <summary>
                /// Login
                /// </summary>
                public const string LOGIN = "Login.aspx";

                /// <summary>
                /// Pagos
                /// </summary>
                public const string PAGOS = "Pagos.aspx";

                /// <summary>
                /// Planilla De Pago De Actores
                /// </summary>
                public const string PLANILLA_DE_PAGO_ACTORES = "PlanillaDePagoActores.aspx";

                /// <summary>
                /// Planilla De Pago - Staff
                /// </summary>
                public const string PLANILLA_DE_PAGO_STAFF = "PlanillaDePagoStaff.aspx";

                /// <summary>
                /// Planilla Dd Créditos
                /// </summary>
                public const string PLANILLA_DE_CREDITOS = "PlanillaDeCreditos.aspx";

                /// <summary>
                /// Proyecto
                /// </summary>
                public const string PROYECTO = "Proyecto.aspx";

                /// <summary>
                /// Proyectos
                /// </summary>
                public const string PROYECTOS = "Proyectos.aspx";

                /// <summary>
                /// Reclamos
                /// </summary>
                public const string RECLAMOS = "Reclamos.aspx";

                /// <summary>
                /// Usuario
                /// </summary>
                public const string USUARIO = "Usuario.aspx";

                /// <summary>
                /// Usuarios
                /// </summary>
                public const string USUARIOS = "Usuarios.aspx";
            }
        }

        public class StoredProcedures
        {
            public const string Guiones_Importados_Listado_GET = "sp_guiones_importados_listado_get";
            public const string Guiones_Listado_GET = "sp_guiones_listado_get";
            public const string Guiones_By_User_GET = "sp_guiones_by_user_get";
            public const string Proyectos_By_User_GET = "sp_proyectos_by_user_get";
            public const string Proyectos_Listado_GET = "sp_proyectos_listado_get";
            public const string Facturacion_GET = "sp_facturacion_get";
            public const string Pagos_Totales_Info_GET = "sp_pagos_totales_info_get";
            public const string Pagos_Listado_GET = "sp_pagos_listado_get";
            public const string Reclamos_COUNT = "sp_reclamos_count";
            public const string USUARIOS_CON_VINCULO_ACTIVO_GET = "sp_usuarios_con_vinculo_activo_get";
        }

        #region Entities

        // TODO => Convert all these into Enums with [Description] attribute
        // TODO => Rename to MasterData ?
        // TODO => Add "Continente" & "Pais" ? (only missing "Master Data" )
        public class Entities
        {
            public const int DEFAULT_ID = -1;
            
            public class TiposUsuario
            {
                public class ADMINISTRADOR
                {
                    public const int Id = 100;
                    public const string Nombre = "ADMINISTRADOR";
                }

                public class MANAGER
                {
                    public const int Id = 1;
                    public const string Nombre = "MANAGER";
                }

                public class DIRECTOR
                {
                    public const int Id = 2;
                    public const string Nombre = "DIRECTOR";
                }

                public class OPERADOR
                {
                    public const int Id = 3;
                    public const string Nombre = "OPERADOR";
                }

                public class ACTOR
                {
                    public const int Id = 4;
                    public const string Nombre = "ACTOR";
                }

                public class TRADUCTOR
                {
                    public const int Id = 5;
                    public const string Nombre = "TRADUCTOR";
                }

                public class ADAPTADOR
                {
                    public const int Id = 6;
                    public const string Nombre = "ADAPTADOR";
                }

                public class EDITOR
                {
                    public const int Id = 7;
                    public const string Nombre = "EDITOR";
                }

                public class MEZCLADOR
                {
                    public const int Id = 8;
                    public const string Nombre = "MEZCLADOR";
                }

                public class PRODUCTOR
                {
                    public const int Id = 9;
                    public const string Nombre = "PRODUCTOR";
                }

                public class TEMPORIZADOR
                {
                    public const int Id = 10;
                    public const string Nombre = "TEMPORIZADOR";
                }
            }

            public class CategoriasUsuario
            {
                public class CONTRATADO
                {
                    public const int Id = 1;
                    public const string Nombre = "CONTRATADO";
                }

                public class FREELANCE
                {
                    public const int Id = 2;
                    public const string Nombre = "FREELANCE";
                }
            }

            public class TiposProyecto
            {
                public class SERIE
                {
                    public const int Id = 1;
                    public const string Nombre = "SERIE";
                }
                public class VIDEOJUEGO
                {
                    public const int Id = 2;
                    public const string Nombre = "VIDEOJUEGO";
                }
            }

            public class TiposCancion
            {
                public class CANCION
                {
                    public const int Id = 1;
                    public const string Nombre = "CANCION";
                }
                public class CORO
                {
                    public const int Id = 2;
                    public const string Nombre = "CORO";
                }
                public class PALABRAS
                {
                    public const int Id = 3;
                    public const string Nombre = "PALABRAS";
                }
            }

            public class EstadosGuion
            {
                public class GENERADO
                {
                    public const int Id = 1;
                    public const string Nombre = "GENERADO";
                }

                public class EN_GRABACION
                {
                    public const int Id = 2;
                    public const string Nombre = "EN GRABACION";
                }

                public class FINALIZADO
                {
                    public const int Id = 3;
                    public const string Nombre = "FINALIZADO";
                }
            }

            public class AutorizacionesGuion
            {
                public class TRADUCCION
                {
                    public const int Id = 1;
                    public const string Nombre = "TRADUCCION";
                }

                public class PRODUCCION
                {
                    public const int Id = 2;
                    public const string Nombre = "PRODUCCION";
                }
            }

            public class EstadosPago
            {
                public class PENDIENTE_DE_PAGO
                {
                    public const int Id = 1;
                    public const string Nombre = "PENDIENTE DE PAGO";
                }

                public class PAGADO
                {
                    public const int Id = 2;
                    public const string Nombre = "PAGADO";
                }
            }

            public class MediosPago
            {
                public class EFECTIVO
                {
                    public const int Id = 1;
                    public const string Nombre = "EFECTIVO";
                }

                public class TRANSFERENCIA
                {
                    public const int Id = 2;
                    public const string Nombre = "TRANSFERENCIA";
                }

                public class ACTORES
                {
                    public const int Id = 3;
                    public const string Nombre = "A TRAVÉS DE ASOCIACIÓN DE ACTORES";
                }
            }

            public class EstadosReclamo
            {
                public class SIN_ATENDER
                {
                    public const int Id = 1;
                    public const string Nombre = "SIN ATENDER";
                }

                public class EN_OBSERVACION
                {
                    public const int Id = 2;
                    public const string Nombre = "EN OBSERVACION";
                }

                public class CERRADO
                {
                    public const int Id = 3;
                    public const string Nombre = "CERRADO";
                }
            }

            public class TiposDocumento
            {
                public class CI
                {
                    public const int Id = 1;
                    public const string Nombre = "Cédula de Identidad";
                }
                public class DNI
                {
                    public const int Id = 2;
                    public const string Nombre = "Documento Nacional de Identidad";
                }
                public class LC
                {
                    public const int Id = 3;
                    public const string Nombre = "Libreta Cívica";
                }
                public class LE
                {
                    public const int Id = 4;
                    public const string Nombre = "Libreta de Enrolamiento";
                }
                public class PA
                {
                    public const int Id = 5;
                    public const string Nombre = "Pasaporte";
                }
            }

            public class TiposNotificacion
            {
                public class RESET_PASSWORD_USUARIO
                {
                    public const int Id = 1;
                    public const string Nombre = "ResetPasswordUsuario";
                }

                public class PAGO_REALIZADO
                {
                    public const int Id = 2;
                    public const string Nombre = "PagoRealizado";
                }

                public class RECLAMO_REALIZADO
                {
                    public const int Id = 3;
                    public const string Nombre = "ReclamoRealizado";
                }

                public class SOLICITUD_AUTORIZACION_GUION
                {
                    public const int Id = 4;
                    public const string Nombre = "SolicitudAutorizacionGuion";
                }

                public class FINALIZACION_GUION
                {
                    public const int Id = 5;
                    public const string Nombre = "FinalizacionGuion";
                }
            }

            public class TiposDireccion
            {
                public class REAL
                {
                    public const int Id = 1;
                    public const string Nombre = "Real";
                }

                public class LEGAL
                {
                    public const int Id = 2;
                    public const string Nombre = "Legal";
                }
            }

            public class TiposTelefono
            {
                public class FIJO
                {
                    public const int Id = 1;
                    public const string Nombre = "Fijo";
                }

                public class FAX
                {
                    public const int Id = 2;
                    public const string Nombre = "Fax";
                }

                public class CELULAR
                {
                    public const int Id = 3;
                    public const string Nombre = "Celular";
                }
            }
        }

        #endregion
    }
}
